import java.util.LinkedList;
import java.util.Queue;

/**
 * Created by cc
 * Description: 使用两个队列来模拟一个栈
 * User: CZH
 * Date: 2022-09-28
 * Time: 19:20
 */
class MyStack1{
    private Queue<Integer> qu1 = new LinkedList<>();
    private Queue<Integer> qu2 = new LinkedList<>();

    public MyStack1() {

    }

    //入栈
    public void push1(int x) {
        if (this.qu1.isEmpty() && this.qu2.isEmpty()) {
            this.qu1.add(x);
        }else {
            if (!this.qu1.isEmpty()) {
                this.qu1.add(x);
            }else if (!this.qu2.isEmpty()){
                this.qu2.add(x);
            }
        }
    }

    public void push2(int x) {
        if (!this.qu1.isEmpty()) {
            this.qu1.offer(x);
        } else if (!this.qu2.isEmpty()) {
            this.qu2.offer(x);
        }else {
            //前面都不为空，就放在qu1队列中
            this.qu1.offer(x);
        }
    }


    //出栈
    public int pop1() {
        int poll = -1;
        if (!this.qu1.isEmpty() && this.qu2.isEmpty()) {
            int size = this.qu1.size();
            for (int i = 0; i < size - 1; i++) {
                poll = this.qu1.poll();
                this.qu2.add(poll);
            }
            poll = this.qu1.poll();
        }
        if (!this.qu2.isEmpty() && this.qu1.isEmpty()) {
            int size = this.qu2.size();
            for (int i = 0; i < size - 1; i++) {
                poll = this.qu2.poll();
                this.qu1.add(poll);
            }
            poll = this.qu2.poll();
        }
        return poll;
    }

    //查看栈顶元素，不删除
    public int top1() {
        int poll = -1;
        if (!this.qu1.isEmpty() && this.qu2.isEmpty()) {
            int size = this.qu1.size();
            for (int i = 0; i < size; i++) {
                poll = this.qu1.poll();
                this.qu2.add(poll);
            }

        }
        if (!this.qu2.isEmpty() && this.qu1.isEmpty()) {
            int size = this.qu2.size();
            for (int i = 0; i < size; i++) {
                poll = this.qu2.poll();
                this.qu1.add(poll);
            }

        }
        return poll;
    }

    //判断栈是否空
    public boolean empty1() {
        return qu1.isEmpty() && qu2.isEmpty();
    }
}

public class Test03 {
}
